// 超低音符号
export const LLNoteArray = [
  { name: 'Note1', value: '\u007F' },
  { name: 'Note2', value: '\u0080' },
  { name: 'Note3', value: '\u0081' },
  { name: 'Note4', value: '\u0082' },
  { name: 'Note5', value: '\u0083' },
  { name: 'Note6', value: '\u0084' },
  { name: 'Note7', value: '\u0085' },
] as const;

// 低音符号
export const LNoteArray = [
  { name: 'Note1', value: '\u0086' },
  { name: 'Note2', value: '\u0087' },
  { name: 'Note3', value: '\u0088' },
  { name: 'Note4', value: '\u002A' },
  { name: 'Note5', value: '\u0025' },
  { name: 'Note6', value: '\u005E' },
  { name: 'Note7', value: '\u0026' },
] as const;

// 中音符号
export const NoteArray = [
  { name: 'Note1', value: '\u0031' },
  { name: 'Note2', value: '\u0032' },
  { name: 'Note3', value: '\u0033' },
  { name: 'Note4', value: '\u0034' },
  { name: 'Note5', value: '\u0035' },
  { name: 'Note6', value: '\u0036' },
  { name: 'Note7', value: '\u0037' },
] as const;

// 休止符
export const RestNote = [{ name: 'Note0', value: '\u0030' }];

// 高音符号
export const HNoteArray = [
  { name: 'Note1', value: '\u0021' },
  { name: 'Note2', value: '\u0040' },
  { name: 'Note3', value: '\u0023' },
  { name: 'Note4', value: '\u0024' },
  { name: 'Note5', value: '\u00A7' },
  { name: 'Note6', value: '\u00A8' },
  { name: 'Note7', value: '\u00A9' },
] as const;

// 超高音符号
export const HHNoteArray = [
  { name: 'Note1', value: '\u00AA' },
  { name: 'Note2', value: '\u00AB' },
  { name: 'Note3', value: '\u00AC' },
  { name: 'Note4', value: '\uF0AD' }, // 软连字符无法显示替换为这个
  { name: 'Note5', value: '\u00AE' },
  { name: 'Note6', value: '\u00AF' },
  { name: 'Note7', value: '\u00B0' },
] as const;

// 类型声明（根据数组结构调整）
export type MusicSymbolType = (typeof NoteArray)[number]['value'];

// 音乐谱号符号
export const ClefSymbolArray = [
  { name: 'TrebleClef', value: '\uD834\uDD1E' }, // 高音谱号 𝄞
  { name: 'BassClef', value: '\uD834\uDD22' }, // 低音谱号 𝄢
  { name: 'AltoClef', value: '\uD834\uDD24' }, // 中音谱号 𝄤
  { name: 'TenorClef', value: '\uD834\uDD25' }, // 次中音谱号 𝄥
  { name: 'Percussion', value: '\uD834\uDD26' }, // 打击乐谱号 𝄦
] as const;

// 音符时值符号
export const NoteValueArray = [
  { name: 'WholeNote', value: '\uD834\uDD5C' }, // 全音符 𝅝
  { name: 'HalfNote', value: '\uD834\uDD5D' }, // 二分音符 𝅗𝅥
  { name: 'QuarterNote', value: '\uD834\uDD5E' }, // 四分音符 𝅘𝅥
  { name: 'EighthNote', value: '\uD834\uDD5F' }, // 八分音符 𝅘𝅥𝅮
  { name: 'SixteenthNote', value: '\uD834\uDD60' }, // 十六分音符 𝅘𝅥𝅯
  { name: 'ThirtySecondNote', value: '\uD834\uDD61' }, // 三十二分音符 𝅘𝅥𝅰
] as const;

// 休止符时值符号
export const RestValueArray = [
  { name: 'WholeRest', value: '\uD834\uDD3B' }, // 全休止符 𝅻
  { name: 'HalfRest', value: '\uD834\uDD3C' }, // 二分休止符 𝅼
  { name: 'QuarterRest', value: '\uD834\uDD3D' }, // 四分休止符 𝅽
  { name: 'EighthRest', value: '\uD834\uDD3E' }, // 八分休止符 𝅾
  { name: 'SixteenthRest', value: '\uD834\uDD3F' }, // 十六分休止符 𝅿
  { name: 'ThirtySecondRest', value: '\uD834\uDD40' }, // 三十二分休止符 𝆀
] as const;

// 变音记号
export const AccidentalArray = [
  { name: 'Sharp', value: '\u266F' }, // 升号 ♯
  { name: 'Flat', value: '\u266D' }, // 降号 ♭
  { name: 'Natural', value: '\u266E' }, // 还原号 ♮
  { name: 'DoubleSharp', value: '\uD834\uDD2A' }, // 重升号 𝄪
  { name: 'DoubleFlat', value: '\uD834\uDD2B' }, // 重降号 𝄫
] as const;

// 演奏技巧记号
export const ArticulationArray = [
  { name: 'Staccato', value: '\uD834\uDD58' }, // 断奏 𝅘𝅥𝅲
  { name: 'Accent', value: '\uD834\uDD7F' }, // 重音 𝆏
  { name: 'Tenuto', value: '\uD834\uDD84' }, // 持续音 𝆔
  { name: 'Fermata', value: '\uD834\uDD10' }, // 延长记号 𝄐
  { name: 'Trill', value: '\uD834\uDD2D' }, // 颤音 𝄭
] as const;

// 力度标记
export const DynamicArray = [
  { name: 'Pianissimo', value: '\uD834\uDD8A' }, // 最弱 𝆊
  { name: 'Piano', value: '\uD834\uDD89' }, // 弱 𝆏
  { name: 'MezzoPiano', value: '\uD834\uDD88' }, // 中弱 𝆎
  { name: 'MezzoForte', value: '\uD834\uDD87' }, // 中强 𝆍
  { name: 'Forte', value: '\uD834\uDD8B' }, // 强 𝆑
  { name: 'Fortissimo', value: '\uD834\uDD8C' }, // 最强 𝆒
  { name: 'Crescendo', value: '\uD834\uDD91' }, // 渐强 𝆑
  { name: 'Diminuendo', value: '\uD834\uDD94' }, // 渐弱 𝆒
] as const;

// 小节线符号
export const BarlineArray = [
  { name: 'SingleBarline', value: '\uD834\uDD00' }, // 单小节线 𝄀
  { name: 'DoubleBarline', value: '\uD834\uDD01' }, // 双小节线 𝄁
  { name: 'EndBarline', value: '\uD834\uDD02' }, // 终止线 𝄂
  { name: 'RepeatStart', value: '\uD834\uDD06' }, // 反复记号开始 𝄆
  { name: 'RepeatEnd', value: '\uD834\uDD07' }, // 反复记号结束 𝄇
] as const;

// 扩展类型声明
export type ClefSymbolType = (typeof ClefSymbolArray)[number]['value'];
export type NoteValueType = (typeof NoteValueArray)[number]['value'];
export type RestValueType = (typeof RestValueArray)[number]['value'];
export type AccidentalType = (typeof AccidentalArray)[number]['value'];
export type ArticulationType = (typeof ArticulationArray)[number]['value'];
export type DynamicType = (typeof DynamicArray)[number]['value'];
export type BarlineType = (typeof BarlineArray)[number]['value'];
